<div align="center">

<img src="logo.png" alt="RecorteX Logo" width="200" height="200"/>

**Herramienta de recortes de pantalla avanzada estilo Windows 10**

[![Python](https://img.shields.io/badge/Python-3.6%2B-3776AB?logo=python&logoColor=white)](https://www.python.org/)
[![PyQt5](https://img.shields.io/badge/PyQt5-5.15%2B-41CD52?logo=qt&logoColor=white)](https://pypi.org/project/PyQt5/)
[![License](https://img.shields.io/badge/License-Propietaria-red)](LICENSE)
[![Platform](https://img.shields.io/badge/Platform-Linux%20%7C%20Windows-0078D4?logo=linux&logoColor=white)](https://github.com)
[![Version](https://img.shields.io/badge/Version-1.0.0-blue)](https://github.com)
[![Developer](https://img.shields.io/badge/Developer-Rodolfo%20Hernandez%20Baz-0D2B52)](https://rodolfohbaz.info/)
[![Company](https://img.shields.io/badge/Company-Rhino%20Forensic%20%26%20Reverse%20Toolkit-142850)](https://rhinosecurity.xyz/)

</div>

---

## Tabla de Contenidos

- [Descripción](#descripción)
- [Características Principales](#características-principales)
- [Modos de Captura](#modos-de-captura)
- [Herramientas de Anotación](#herramientas-de-anotación)
- [Acciones Post-Captura](#acciones-post-captura)
- [Atajos de Teclado](#atajos-de-teclado)
- [Interfaz de Usuario](#interfaz-de-usuario)
- [Requisitos del Sistema](#requisitos-del-sistema)
- [Uso](#uso)
- [Estructura del Proyecto](#estructura-del-proyecto)
- [Créditos](#créditos)
- [Licencia](#licencia)

---

## Descripción

**RecorteX v1.0** es una herramienta de recortes de pantalla avanzada desarrollada en Python con PyQt5, inspirada en la funcionalidad de recortes de Windows 10 pero con una interfaz moderna y personalizable. Permite capturar áreas específicas de la pantalla, anotar las capturas con herramientas de dibujo profesionales y exportarlas en múltiples formatos. Su diseño visual combina una paleta de colores blanco y azul marino con controles estilo macOS (traffic lights), ofreciendo una experiencia de usuario elegante y funcional tanto en Linux como en Windows.

La aplicación se ejecuta como una ventana compacta que se expande automáticamente al realizar una captura, adaptando su tamaño al del recorte obtenido. Además, incluye integración con la bandeja del sistema (system tray), lo que permite mantener la herramienta accesible sin ocupar espacio en la barra de tareas, y un splash screen profesional con el logotipo del proyecto durante el inicio.

---

## Características Principales

| Característica | Descripción |
|---|---|
| **4 modos de captura** | Rectangular, forma libre, ventana y pantalla completa |
| **Anotaciones en tiempo real** | Lápiz, marcador resaltador y borrador sobre las capturas |
| **Selector de color** | Paleta de colores personalizable para las herramientas de dibujo |
| **Retardo de captura** | Temporizador configurable de 0 a 10 segundos antes de capturar |
| **Dimensiones en vivo** | Muestra el ancho x alto del área seleccionada durante la captura rectangular |
| **Guardar en múltiples formatos** | Exportación a PNG, JPEG y BMP |
| **Copiar al portapapeles** | Copia directa de la captura anotada al portapapeles del sistema |
| **Envío por correo** | Adjunta la captura directamente a un cliente de correo electrónico |
| **Impresión** | Envía la captura al visor/administrador de impresión del sistema |
| **Bandeja del sistema** | Minimiza al tray con menú contextual para captura rápida y restauración |
| **Splash screen** | Pantalla de inicio profesional con logotipo y animación de carga |
| **Barra de título personalizada** | Botones estilo macOS (traffic lights) con efecto hover animado |
| **Auto-redimensión** | La ventana se ajusta automáticamente al tamaño de la captura |
| **Deshacer y limpiar** | Deshace la última anotación o limpia todas con un solo clic |
| **Limpieza automática** | Elimina archivos temporales al cerrar la aplicación |

---

## Modos de Captura

### Rectangular (predeterminado)
Permite seleccionar un área rectangular de la pantalla arrastrando el cursor. Durante la selección, se muestra un overlay oscuro fuera del área seleccionada y una etiqueta con las dimensiones en píxeles (ancho x alto) en la parte superior de la selección. El borde de la selección se dibuja con línea punteada azul marino para mayor precisión visual.

### Forma Libre
Captura una zona de forma irregular dibujando a mano alzada sobre la pantalla. El usuario traza el contorno deseado manteniendo presionado el botón del mouse, y al soltarlo se genera una máscara transparente que recorta la imagen siguiendo exactamente la forma dibujada, con suavizado de bordes mediante antialiasing.

### Ventana
Detecta y resalta regiones de la pantalla divididas en una cuadrícula de 3x3. Al mover el cursor, se resalta la sección correspondiente y al hacer clic se captura esa región completa. Ideal para capturar secciones específicas de la pantalla sin necesidad de dibujar manualmente.

### Pantalla Completa
Captura instantáneamente toda la pantalla sin necesidad de selección. Se activa automáticamente al seleccionar este modo en el menú desplegable, sin paso intermedio de overlay.

---

## Herramientas de Anotación

| Herramienta | Icono | Descripción |
|---|---|---|
| **Lápiz** | Diagonal con punta | Dibuja trazos finos y precisos con el color seleccionado. Grosor configurable. |
| **Marcador** | Línea gruesa con punta | Dibuja trazos semitransparentes estilo resaltador, ideal para destacar áreas. Grosor 4x del lápiz. |
| **Borrador** | Rectángulo redondeado | Elimina trazos y anotaciones existentes dibujando sobre ellos con trama transparente. |
| **Selector de color** | Cuadro de color | Abre el diálogo de colores del sistema para personalizar el color del lápiz. |
| **Deshacer** | Flecha curva | Elimina la última anotación realizada (equivalente a Ctrl+Z). |
| **Limpiar** | X roja | Elimina todas las anotaciones de la captura actual. |

Las anotaciones se almacenan como trazos vectoriales (no rasterizados), lo que permite deshacerlas individualmente sin afectar la imagen original. Todas las anotaciones se escalan proporcionalmente al tamaño del lienzo y se renderizan con antialiasing para una calidad visual óptima.

---

## Acciones Post-Captura

Una vez realizada una captura, se habilitan las siguientes acciones en la barra de herramientas:

| Acción | Icono | Atajo | Descripción |
|---|---|---|---|
| **Copiar** | Portapapeles | `Ctrl+C` | Copia la imagen anotada al portapapeles del sistema para pegarla en cualquier aplicación. |
| **Guardar** | Disco | `Ctrl+S` | Abre el diálogo de guardado con nombre predeterminado `RecorteX_YYYYMMDD_HHMMSS.png`. Soporta PNG, JPEG y BMP. |
| **Correo** | Sobre | — | Abre el cliente de correo predeterminado del sistema con la captura como adjunto. |
| **Imprimir** | Impresora | — | Envía la captura al visor de impresión del sistema operativo. |

---

## Atajos de Teclado

| Atajo | Acción |
|---|---|
| `Ctrl+N` | Iniciar nueva captura |
| `Ctrl+S` | Guardar captura actual |
| `Ctrl+C` | Copiar captura al portapapeles |
| `Ctrl+Z` | Deshacer última anotación |
| `Escape` | Cancelar captura / Deseleccionar herramienta |
| `Clic derecho` | Cancelar captura en el overlay |
| `Doble clic` (barra de título) | Maximizar / Restaurar ventana |

---

## Interfaz de Usuario

### Barra de Título Personalizada
La ventana principal utiliza una barra de título completamente personalizada con botones estilo macOS (traffic lights):
- **Rojo** (×): Cierra la aplicación (al hacer clic se minimiza al tray; el cierre real requiere usar la opción "Salir" del menú del tray).
- **Amarillo** (−): Minimiza la aplicación a la bandeja del sistema con notificación.
- **Verde** (+): Maximiza o restaura la ventana al tamaño normal.
- **Azul** (?): Abre el diálogo "Acerca de" con información del programa, programador y empresa.

Cada botón muestra un efecto de hover con gradiente radial animado y el símbolo correspondiente aparece al pasar el cursor.

### Bandeja del Sistema (System Tray)
Al minimizar o cerrar la ventana, RecorteX se oculta en la bandeja del sistema con un icono circular azul marino con las letras "Rx". El menú contextual del tray incluye:
- **Mostrar Recorte X**: Restaura la ventana principal.
- **Nueva captura**: Restaura la ventana e inicia una captura automáticamente.
- **Salir**: Cierra definitivamente la aplicación.

### Splash Screen
Al iniciar la aplicación, se muestra durante 3 segundos una pantalla de inicio con el logotipo del proyecto, el texto "BY Pr@fEsor X" y un indicador de carga sobre un fondo blanco con una franja decorativa azul marino en la parte inferior.

### Paleta de Colores
La interfaz utiliza una paleta de colores coherente basada en blanco y azul marino:
- **Fondo principal**: `#FFFFFF` (blanco puro)
- **Fondo toolbar**: `#F5F7FA` (gris muy claro)
- **Acento primario**: `#0D2B52` (azul marino oscuro)
- **Acento brillante**: `#1A4A8A` (azul medio)
- **Texto**: `#1A1A2E` (casi negro)
- **Bordes**: `#C8D0D8` (gris claro)

---

## Requisitos del Sistema

### Dependencias de Software

| Dependencia | Versión Mínima | Propósito |
|---|---|---|
| Python | 3.6+ | Intérprete principal |
| PyQt5 | 5.15+ | Framework de interfaz gráfica |
| Qt (incluido en PyQt5) | 5.15+ | Motor de renderizado y widgets |

### Requisitos del Sistema Operativo

- **Linux**: X11 o Wayland con servidor de display funcional. Se requiere `xdg-open` para las funciones de correo e impresión.
- **Windows**: Windows 7 o superior con soporte de GUI.

### Hardware

- Resolución de pantalla mínima: 800x600
- Memoria RAM: 128 MB disponibles
- Espacio en disco: 50 MB (incluyendo dependencias)

---

## Uso

1. **Iniciar la aplicación**: Ejecuta `python3 recorte_x.py` o el ejecutable compilado.
2. **Esperar el splash screen**: La aplicación muestra el logotipo durante 3 segundos.
3. **Seleccionar modo de captura**: Usa el menú desplegable "Modo" para elegir entre rectangular, forma libre, ventana o pantalla completa.
4. **Configurar retardo (opcional)**: Si necesitas capturar menús o tooltips, configura un retardo de 1 a 10 segundos.
5. **Capturar**: Haz clic en el botón de lupa de colores o presiona `Ctrl+N`.
6. **Seleccionar área**: Para modo rectangular, arrastra el cursor. Para forma libre, dibuja el contorno. Para ventana, haz clic en la región deseada.
7. **Anotar**: Usa las herramientas de lápiz, marcador o borrador para agregar anotaciones a la captura.
8. **Guardar o copiar**: Usa los botones de la barra de herramientas o los atajos de teclado para guardar, copiar, enviar por correo o imprimir.
9. **Minimizar al tray**: Cierra la ventana para minimizar a la bandeja del sistema. Usa el menú del tray para capturar rápidamente o salir.

---

## Estructura del Proyecto

```
RecorteX/
├── recorte_x.py          # Código fuente principal (aplicación completa)
├── logo.png              # Logotipo de la aplicación
├── README.md             # Este archivo
├── requirements.txt      # Dependencias del proyecto
└── LICENSE               # Licencia del software
```

### Arquitectura del Código

El archivo `recorte_x.py` contiene todas las clases de la aplicación en un único módulo:

| Clase | Líneas aprox. | Función |
|---|---|---|
| `MacTitleButton` | 78-116 | Botón estilo macOS con gradiente radial y efecto hover |
| `AboutButton` | 119-150 | Botón de información "?" con gradiente azul |
| `CustomTitleBar` | 156-242 | Barra de título personalizada con botones traffic lights |
| `AboutDialog` | 248-386 | Diálogo "Acerca de" con logo, información del programador y empresa |
| `SnipOverlay` | 391-606 | Overlay de captura de pantalla con los 4 modos |
| `AnnotationCanvas` | 612-785 | Lienzo de anotaciones vectoriales con escalado proporcional |
| `FlatIconButton` | 791-926 | Botón plano con icono unicode y lupa de colores personalizada |
| `FlatToolIconButton` | 929-1031 | Botón de herramienta con iconos dibujados manualmente |
| `FlatDropdown` | 1037-1073 | Menú desplegable plano sin bordes obvios |
| `MainWindow` | 1079-1557 | Ventana principal: toolbar, canvas, tray, atajos y acciones |
| `main()` | 1563-1650 | Punto de entrada: splash screen, paleta de colores, loop de Qt |

---

## Créditos

| Rol | Nombre | Enlace |
|---|---|---|
| **Programador** | Rodolfo Hernandez Baz | [rodolfohbaz.info](https://rodolfohbaz.info/) |
| **Alias** | Pr@fEsor X | — |
| **Empresa** | Rhino Forensic & Reverse Toolkit | [rhinosecurity.xyz](https://rhinosecurity.xyz/) |

---

## Licencia

Copyright (c) 2026 Rodolfo Hernandez Baz — Rhino Forensic & Reverse Toolkit. Todos los derechos reservados.
